package com.along.jdkeight;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/*
 * @Author: liujinyi
 * @DateTime: 2025/3/6 10:37
 */
public class test {
    /**
     * @description:
     * @author: liujinyi
     * @date: 2025/3/6
     * @params: [args]
     * @return: void
     **/
    public static void main(String[] args) throws ScriptException {

        // 1. Lambda 表达式        a,b,c
        //简化了匿名内部类的写法，支持函数式编程。
//        List<String> list = Arrays.asList("a","b","c");
//        list.forEach(s -> System.err.println(s));

        // 2. Stream API          a
        //提供了对集合进行函数式操作的能力，支持链式调用。
//        List<String> list = Arrays.asList("a", "b", "c");
//        list.stream()
//                .filter(s -> s.startsWith("a"))
//                .forEach(System.out::println);

        // 4. 方法引用  a,b,c
        //简化 Lambda 表达式，直接引用已有方法。
        List<String> list = Arrays.asList("a", "b", "c");
        list.forEach(System.out::println);


        // 5. 新的日期时间 API（java.time 包）
        //引入了全新的日期时间 API，解决了旧 API 的线程安全问题。
        LocalDate date = LocalDate.now();
        System.out.println(date);

        //6. Optional 类
        //用于避免空指针异常，提供更优雅的空值处理方式。
        Optional<String> optional = Optional.ofNullable(null);
        System.out.println(optional.orElse("Default Value"));

        // 7. Nashorn JavaScript 引擎
        //提供了新的 JavaScript 引擎，支持在 Java 中运行 JavaScript 代码。

        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        engine.eval("print('Hello Nashorn!')");



    }

}
